MongoDB তে Aggregation Framework একটি শক্তিশালী এবং নমনীয় পদ্ধতি, যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি ডেটাবেসের ডেটা বিশ্লেষণ, পরিবর্তন, গ্রুপিং, সোর্টিং, ফিল্টারিং এবং অন্যান্য অনেক ধরনের জটিল অপারেশন করতে সক্ষম। Aggregation Framework MongoDB তে একাধিক ডকুমেন্ট থেকে প্রয়োজনীয় তথ্য সংগ্রহ এবং কাস্টমাইজড ফলাফল তৈরি করার জন্য ব্যবহৃত হয়।
MongoDB তে Aggregation পিপলাইন হলো এমন একটি প্রযুক্তি, যা একাধিক স্টেপ বা অপারেশনকে একসাথে প্রসেস করার জন্য ব্যবহৃত হয়। এটি SQL তে GROUP BY
, JOIN
, HAVING
এর মতো কার্যাবলীর সমান।
Basic Structure of an Aggregation Pipeline:
db.collection.aggregate([
{ $match: { field: value } }, // 1st stage
{ $group: { _id: "$field", total: { $sum: 1 } } }, // 2nd stage
{ $sort: { total: -1 } } // 3rd stage
])
MongoDB তে Aggregation Framework বিভিন্ন ধরনের অপারেটর প্রদান করে, যা ডেটা প্রসেসিংয়ের বিভিন্ন কাজ সহজ করে তোলে। কিছু প্রধান Aggregation Operators:
$match
অপারেটর MongoDB তে ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়, যেমন SQL তে WHERE
ক্লজ। এটি একটি কন্ডিশনাল ফিল্টার হিসেবে কাজ করে।
উদাহরণ:
db.orders.aggregate([
{ $match: { status: "completed" } }
])
এটি সমস্ত "completed" স্ট্যাটাসের অর্ডার ফেরত দেবে।
$group
অপারেটর MongoDB তে ডেটা গ্রুপ করতে ব্যবহৃত হয়, যেমন SQL তে GROUP BY
। এটি এক বা একাধিক ফিল্ডের ভিত্তিতে গ্রুপ করে, এবং গ্রুপ করা ডেটার উপর অ্যাগ্রিগেট ফাংশন (যেমন, sum
, avg
, min
, max
) প্রয়োগ করতে সাহায্য করে।
উদাহরণ:
db.sales.aggregate([
{ $group: { _id: "$product", totalSales: { $sum: "$amount" } } }
])
এটি প্রতিটি পণ্যের মোট বিক্রয় পরিমাণ গণনা করবে।
$project
অপারেটর MongoDB তে ডেটার কাঠামো পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটার কিছু ফিল্ডকে অন্তর্ভুক্ত বা বাদ দিতে পারে এবং নতুন ফিল্ডও তৈরি করতে পারে।
উদাহরণ:
db.orders.aggregate([
{ $project: { _id: 0, orderId: 1, customerName: 1 } }
])
এটি শুধুমাত্র orderId
এবং customerName
ফিল্ডগুলো সহ ডকুমেন্ট ফেরত দিবে এবং _id
ফিল্ডটি বাদ দেবে।
$sort
অপারেটর MongoDB তে ডেটা সাজানোর জন্য ব্যবহৃত হয়, যেমন SQL তে ORDER BY
।
উদাহরণ:
db.orders.aggregate([
{ $sort: { orderDate: -1 } }
])
এটি ডেটা orderDate
এর মাধ্যমে DESCENDING অর্ডারে সাজাবে।
$limit
অপারেটর MongoDB তে ডেটার পরিমাণ সীমাবদ্ধ করার জন্য ব্যবহৃত হয়। এটি সাধারণত বৃহৎ ডেটাসেট থেকে একটি নির্দিষ্ট সংখ্যক ডকুমেন্ট ফেরত দিতে ব্যবহৃত হয়।
উদাহরণ:
db.orders.aggregate([
{ $limit: 5 }
])
এটি প্রথম 5টি ডকুমেন্ট ফিরিয়ে দিবে।
$skip
অপারেটর MongoDB তে ডেটা থেকে কিছু ডকুমেন্ট বাদ দেয়ার জন্য ব্যবহৃত হয়। এটি offset
এর মতো কাজ করে।
উদাহরণ:
db.orders.aggregate([
{ $skip: 10 }
])
এটি প্রথম 10টি ডকুমেন্ট বাদ দিয়ে বাকি ডকুমেন্টগুলো ফিরিয়ে দেবে।
$unwind
অপারেটর MongoDB তে একটি অ্যারে ফিল্ডের উপর কাজ করে। এটি একটি অ্যারের প্রতিটি উপাদানকে আলাদা আলাদা ডকুমেন্টে বিভক্ত করে।
উদাহরণ:
db.orders.aggregate([
{ $unwind: "$items" }
])
এটি items
নামক অ্যারে ফিল্ডে প্রতিটি আইটেমকে একটি পৃথক ডকুমেন্টে রূপান্তর করবে।
এখানে একটি MongoDB অ্যাগ্রিগেশন পিপলাইন উদাহরণ দেওয়া হলো, যেখানে ডেটাকে ফিল্টার, গ্রুপ এবং সাজানো হয়েছে:
db.orders.aggregate([
{ $match: { status: "completed" } }, // Filter orders with status "completed"
{ $group: { _id: "$customerId", totalAmount: { $sum: "$amount" } } }, // Group by customerId and calculate total amount
{ $sort: { totalAmount: -1 } }, // Sort by totalAmount in descending order
{ $limit: 5 } // Get top 5 customers with the highest totalAmount
])
এটি সমস্ত "completed" স্ট্যাটাসের অর্ডারগুলো ফিল্টার করবে, গ্রুপ করবে customerId
এর ভিত্তিতে এবং মোট অর্ডারের পরিমাণ গণনা করবে, তারপর মোট পরিমাণের উপর ভিত্তি করে সেগুলো সাজাবে এবং সর্বোচ্চ ৫টি গ্রাহক দেখাবে।
MongoDB এর Aggregation Framework একটি শক্তিশালী টুল যা ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি MongoDB ডেটাবেসে ডেটাকে গ্রুপ, ফিল্টার, সোর্ট, এবং অ্যাগ্রিগেশন অপারেশন করতে সাহায্য করে। Aggregation Pipeline এর মাধ্যমে একাধিক স্টেপে ডেটা প্রসেস করা সম্ভব এবং MongoDB ডেটাবেসের জটিল কুয়েরি অপারেশন কার্যকরভাবে পরিচালনা করা যায়। MongoDB তে বিভিন্ন Aggregation Operators যেমন $match
, $group
, $project
, $sort
ইত্যাদি ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়, যা ডেটাবেস ম্যানেজমেন্ট এবং ডেটা বিশ্লেষণে অত্যন্ত কার্যকর।
Read more